/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gestionnaire;

import java.util.Collection;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import modeles.utilisateur;

/**
 *
 * @author elo
 */
@Stateless
public class gestionnaireUtilisateur {

    @PersistenceContext
    private EntityManager em;

   public utilisateur creeUtilisateur(String login, String mdp) {
        utilisateur a = new utilisateur(login, mdp);
        em.persist(a);
        return a;
    }

   public void creerUtilisateurTest(){
      if(countUsers() == 0){
           for(int i=0 ; i<30 ; i++){
               creeUtilisateur("user"+(i+1), "passe"+(i+1));
           }
       }
   }

   public int countUsers() {
        Query q = em.createQuery("select count(u) from utilisateur u");
        int nb = Integer.parseInt(q.getSingleResult().toString());
        return nb;
    }

   public boolean isUtilisateur(String login, String mdp){
       Query q = em.createQuery("select u from utilisateur u where u.login like :login");
        q.setParameter("login", login);
        Collection<Object> result = q.getResultList();
        utilisateur u = null;
        if(result.size() == 0){
            u = null;
        } else{
            u = (utilisateur)result.toArray()[0];
        }
       
        if (u != null)
        {
            if(u.getMdp().equals(mdp)){
                return true;
            }
            else{
                return false;
            }
        }else
        {
            return false;
        }
   }

   public void dellAllUsers() {
        Query q = em.createQuery("delete from utilisateur u");
        q.executeUpdate();
    }

   public void dellUserById(String id) {
        Query q = em.createQuery("delete from utilisateur u where u.id=:uid");
        q.setParameter("uid", Integer.parseInt(id));
        q.executeUpdate();
    }

    public Collection<utilisateur> getAllUsers() {
        // Exécution d'une requête équivalente à un select *
        Query q = em.createQuery("select u from utilisateur u");
        return q.getResultList();
    }
 
}
